package com.zzq.my.jetpacks.jectpackapp.bean

import android.os.Parcelable
import kotlinx.parcelize.Parcelize


/**
 * 描述：class describe
 * 作者：zhuangzeqin
 * 时间: 2021/12/23-14:54
 * 邮箱：zzq@eeepay.cn
 * 备注: Parcelable 实现类主体结构
 */
@Parcelize
data class ItemInfo(val name:String?):Parcelable {
    // 1 想自己写序列化和反序列化逻辑呢？当然也有办法，就是在类内部实现write和create方法
   /* private companion object : Parceler<ItemInfo> {
        override fun ItemInfo.write(parcel: Parcel, flags: Int) {
            // Custom write implementation
            parcel.writeString(name)
        }

        override fun create(parcel: Parcel): ItemInfo {
            // Custom read implementation
            val itemInfo = ItemInfo(parcel.readString()?:"")
            return itemInfo
        }
    }*/

    //2 如果真遇到了某个类型不被支持，但是开发者就是想要序列化，Parcelable也有自定义的方法，就是
    /*class ExternalClass(val value: Int)

    object ExternalClassParceler : Parceler<ExternalClass> {
        override fun create(parcel: Parcel) = ExternalClass(parcel.readInt())

        override fun ExternalClass.write(parcel: Parcel, flags: Int) {
            parcel.writeInt(value)
        }
    }*/
    //使用也很方便
    // Class-local parceler
//    @Parcelize
//    @TypeParceler<ExternalClass, ExternalClassParceler>()
//    class MyClass(val external: ExternalClass) : Parcelable
//
//    // Property-local parceler
//    @Parcelize
//    class MyClass(@TypeParceler<ExternalClass, ExternalClassParceler>() val external: ExternalClass) : Parcelable
//
//    // Type-local parceler
//    @Parcelize
//    class MyClass(val external: @WriteWith<ExternalClassParceler>() ExternalClass) : Parcelable

}
